package com.example.demo.service;

import com.example.demo.dto.TaskTypeDTO;
import com.example.demo.entity.TaskType;

import java.util.List;

public interface TaskTypeService {

    /**
     * 创建任务类型
     * 
     * @param taskType 任务类型实体
     * @return 创建的任务类型
     */
    TaskType createTaskType(TaskType taskType);

    /**
     * 根据ID删除任务类型
     * 
     * @param taskTypeId 任务类型ID
     * @return 是否删除成功
     */
    boolean deleteTaskType(Long taskTypeId);

    /**
     * 更新任务类型
     * 
     * @param taskType 任务类型实体
     * @return 更新后的任务类型
     */
    TaskType updateTaskType(TaskType taskType);

    /**
     * 根据ID查询任务类型
     * 
     * @param taskTypeId 任务类型ID
     * @return 任务类型DTO
     */
    TaskTypeDTO getTaskTypeById(Long taskTypeId);

    /**
     * 查询所有任务类型
     * 
     * @return 任务类型DTO列表
     */
    List<TaskTypeDTO> getAllTaskTypes();

    /**
     * 根据数据源ID查询任务类型列表
     * 
     * @param dataSourceId 数据源ID
     * @return 任务类型DTO列表
     */
    List<TaskTypeDTO> getTaskTypesByDataSourceId(Long dataSourceId);

    /**
     * 根据任务名称搜索任务类型
     * 
     * @param taskName 任务名称
     * @return 任务类型DTO列表
     */
    List<TaskTypeDTO> searchTaskTypesByName(String taskName);

    /**
     * 统计任务类型总数
     * 
     * @return 任务类型总数
     */
    int countTaskTypes();
    
    /**
     * 检查是否存在相同的数据源ID的记录
     * 
     * @param dataSourceId 数据源ID
     * @return 是否存在
     */
    boolean existsByDataSourceId(Long dataSourceId);
}